Модуль:Инфобокс монстров
local monsterInfobox = {} function monsterInfobox.Header(val) -- Тип монстра local mtype = string.gsub(val.args1, '^^\(*\((^\)*)\).*', '%1') -- Первое имя local mname = string.gsub(val.args1, '^(^\(*).*', '%1') -- Второе имя local sname = string.gsub(val.args1, '.*—\-%s(.*)$', '%1') -- Звёзды первого local first = mw.text.split(val.args2, "-") -- Звёзды второго local second = mw.text.split(val.args3, "-") -- Функция для звёзд function Star(name, i) if name nil or i nil then return end local starfile if name 'С' or name 'с' then starfile = 'Silver' elseif name 'З' or name 'з' then starfile = 'Gold' elseif name 'Ф' or name 'ф' then starfile = 'Purple' else return end return ' '..string.rep(' \[\Star.png|20px|link=\\] ', i)..' ' end -- Функция для других типов монстров function AnotherTypes(array) local array = mw.text.split(array, ",%s?") local elemarray = {Wind = 'ветер', Water = 'вода', Fire = 'огонь', Light = 'свет', Dark = 'тьма'} local form = ' ' for i, v in ipairs(array) do local data = string.gsub(v, '^%s+', '') local monsterdata = mw.text.split(data, '-') local mostertype = ElemType(monsterdata1) form = form..'\[\20px|link='..mname..'('..elemarray[mostertype..') — '..monsterdata2..'\]\] ' end return form..' ' end -- Функция для типа function ElemType(elem) local eltype if elem 'Ветер' or elem 'ветер' then eltype = 'Wind' elseif elem 'Вода' or elem 'вода' then eltype = 'Water' elseif elem 'Огонь' or elem 'огонь' then eltype = 'Fire' elseif elem 'Свет' or elem 'свет' then eltype = 'Light' elseif elem 'Тьма' or elem 'тьма' then eltype = 'Dark' else eltype = 'Placeholder' end return eltype end -- Тело для звёзд local starbody1 = Star(first1, first2) local starbody2 = Star(second1, second2) -- Filename local filename = ElemType(mtype) local body = ' \[\20px|link=\\] '..' '..mname..starbody1..' — '..sname..' '..starbody2..' ' -- Body for other types -- Другие типы if val.args4 ~= 'none' then local bodytypes = AnotherTypes(val.args4) body = body..bodytypes end return body end function monsterInfobox.Body(val) -- Тип монстра local mtype = string.gsub(val.args1, '^^\(*\((^\)*)\).*', '%1') -- Первое имя local mname = string.gsub(val.args1, '^(^\(*).*', '%1') -- Второе имя local sname = string.gsub(val.args1, '.*—\-%s(.*)$', '%1') -- Ингридиенты local ingr = mw.text.split(val.args2, ",%s+") -- Функция для ингридиентов function Grow(get_ingr) if get_ingr nil or get_ingr '' then return end local form = "" for k, v in ipairs(get_ingr) do local ldata = mw.text.split(v, "-") local ltype = string.gsub(ldata1, "%d+", "") local lvl = string.gsub(ldata1, "^%d+", "") local less = {} local lstats = {} if lvl '1' then lstats1 = 'Low' lstats2 = 'Малая' elseif lvl '2' then lstats1 = 'Mid' lstats2 = 'Средняя' elseif lvl '3' then lstats1 = 'High' lstats2 = 'Высокая' else return end if ltype 'Ветер' or ltype 'ветер' then less1 = 'Ветра' less2 = 'Wind' elseif ltype 'Вода' or ltype 'вода' then less1 = 'Воды' less2 = 'Water' elseif ltype 'Огонь' or ltype 'огонь' then less1 = 'Огня' less2 = 'Fire' elseif ltype 'Свет' or ltype 'свет' then less1 = 'Света' less2 = 'Light' elseif ltype 'Тьма' or ltype 'тьма' then less1 = 'Тьмы' less2 = 'Dark' elseif ltype 'Магия' or ltype 'магия' then less1 = 'Магии' less2 = 'Magic' else return end form = form.. ' '.. ' '.. '\[\of '..less[2..' ('..lstats1..').png|35px|center|link=\]\]'.. ' '.. ''.. ldata2.. ''.. ' ' end return form end -- Тело ингридиентов local ingr_body = Grow(ingr) if ingr_body '' or ingr_body nil then ingr_body = '' end -- Основное тело return ' '.. ' '..' '..ingr_body.. ' '.. ' '.. ' '.. ' Тип: '..val.args3..' '.. ' Бонус роста: '..val.args4..' '.. ' Получение: '..val.args5..' '.. ' '.. '[[en:'..val.args1..']]'.. ' ' end function monsterInfobox.CreateSkill(val) return ' '.. ' '.. ' '.. ' '..val.args2..' '.. ' '..val.args3..' '.. ' '.. ' ' end return monsterInfobox